const Service = require("egg").Service;

class NewsService extends Service {
	async list(page = 1) {
		// read config
		const { serverUrl, pageSize } = this.config.news;

		// use build-in http client to Get hacker-news api
		const { data: idList } = await this.ctx.curl(`${serverUrl}/topstories.json`, {
			data: {
				orderBy: `"$key"`,
				startAt: `"${pageSize * (page - 1)}"`,
				endAt: `"${pageSize * page - 1}"`,
			},
			dataType: "json",
		});

		// parallel GET detail
		const newsList = await Promise.all(
			Object.keys(idList).map((key) => {
				const url = `${serverUrl}/item/${idList[key]}.json`;
				return this.ctx.curl(url, { dataType: "json" });
			})
		);
		return newsList.map((res) => res.data);
	}
}

module.exports = NewsService;

// 添加 news 的配置项
exports.news = {
	pageSize: 5,
	serverUrl: "https://hacker-news.firebaseio.com/v0",
};
